extends Node2D
'''为了方便调节难度，我希望用N个算式来调节怪物数量'''
var y_now=0
var y_last_creat=0
var x_count=0
var k1=10
var k2=2
@onready var player: CharacterBody2D = get_tree().get_first_node_in_group("player") # 确保玩家在 "player" 组
@export var enemy_scenes: Array[PackedScene] # 导出一个 PackedScene 数组，用于放置不同类型的敌人场景
@export var spawn_interval: float = 3.0 # 生成间隔（秒）
@export var spawn_radius_min: float = 1000.0 # 最小生成半径（距离玩家中心）
@export var spawn_radius_max: float = 2000.0 # 最大生成半径（距离玩家中心）
@onready var spawn_timer: Timer = $Timer
func _ready() -> void:
	spawn_timer.start() # 启动计时器
func _process(delta: float) -> void:
	y_now=k1*x_count
	if y_now-y_last_creat>10:
		y_last_creat=y_now
		刷怪()
func _on_timer_timeout() -> void:
	x_count+=1
func 刷怪():
	if enemy_scenes.is_empty():
		printerr("Error: No enemy scenes assigned to Generator.")
		return

	var chosen_enemy_scene = enemy_scenes[randi() % enemy_scenes.size()]
	var enemy_instance = chosen_enemy_scene.instantiate()

	var spawn_pos = get_random_spawn_position()
	enemy_instance.position = spawn_pos

	get_parent().add_child(enemy_instance)
	print("Spawned enemy at: ", spawn_pos)

func get_random_spawn_position() -> Vector2:
	if player == null:
		return Vector2.ZERO

	var player_pos = player.global_position
	# var viewport_rect = get_viewport().get_visible_rect() # 这个变量在这里可能不需要

	var angle = randf() * TAU
	var distance = randf_range(spawn_radius_min, spawn_radius_max)
	var offset = Vector2(cos(angle), sin(angle)) * distance

	return player_pos + offset
